今天來介紹一下 NiFi 如何對 Relation Database 做整合操作,這邊我會以 MySQL 來做一個介紹。
首先我們一樣透過 docker 來建立 mysql,這邊一樣給讀者們一個 docker-compose.yaml sample:
version: '3'
services:
nifi:
image: nifi-sample
container_name: nifi-service
restart: always
ports:
- 8443:8443/tcp
- 8080:8080/tcp
env_file: .env
environment:
SINGLE_USER_CREDENTIALS_USERNAME: ${NIFI_USERNAME}
SINGLE_USER_CREDENTIALS_PASSWORD: ${NIFI_PASSWORD}
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
AWS_REGION: ${AWS_REGION}
networks:
- nifi-network
nifi-registry:
image: apache/nifi-registry:1.14.0
container_name: nifi-registry-service
restart: always
ports:
- 18080:18080/tcp
networks:
- nifi-network
mysql:
image: mysql:5.7
container_name: nifi-rdb
restart: always
ports:
- 3306:3306/tcp
env_file: .env
environment:
MYSQL_ROOT_PASSWORD: ${DB_ADMIN_PASSWORD}
MYSQL_DATABASE: ${DB_NAME}
networks:
- nifi-network
networks:
nifi-network:
接著透過 docker-compose up -d 建立起來就沒有問題了。
至於如何在 NiFi 中來對 MySQL 做對接了,其實NiFi 主要是提通的 General Processor 和 Controller Service Settings,也就是說對於外部的 RDB 或 Query Engine等服務,所採用的設定都是一樣的,唯一不一樣的是 JDBC Driver。
因為 NiFi 本身是用 JAVA 所開發出來的,所以對於外部的資料庫時必須要透過 JDBC 的 Driver 才可以做資料對接,這是相對比較有一點小麻煩,因為我們必須先下載 JDBC Driver 到指定的 Container 的路徑下。
這邊給讀者們 MySQL JDBC Driver 下載的 link,請點此,再依據自己的 MySQL 版本下載對應的 JDBC,Driver name 是 com.mysql.jdbc.Driver。
接著我們到 Controller Service 來選擇 DBConnectionPool 來做對接的設定:
接著我們設定好其中必要的 Properties:
jdbc:mysql://172.17.0.1:3306/nifi?user=[username]&password=[password]
com.mysql.jdbc.Driver
/tmp/mysql-connector-java-5.1.49.jar
接下來我們就可以來使用 Processor 對 MySQL 做整合了,今天會用 PutSQL 和 QueryDatabaseTable 來做介紹:
這個 Processor 主要是讓我們可以對 Database 做 SQL 的操作,ex. INSERT, UPDATE, DELETE 等,所以他在設定上也是相對簡單,參考如下:
透過以上建制之後,我們就可以對 MySQL 做資料的操作了。
這個 Processor 主要是用來從 DB 到讀取資料出來用的,但就無法做 Insert, update 等操作,我們來看一下他的設定:
MySQL。此外他也有支援 Orable, MSSQL 等類型, 做分隔簡單來說,你可以想像成我們就常用的 SELECT..FROM..WHERE.. 的語法拆解到這個 Processor 的各個設定上。當然你也可以透過 PutSQL 做到一樣的效果。
透過今天簡單的小分享,想必大家應該知道如何從 NiFi 的角度出發來向 RDB table 的資料做操作,雖然今天是以 MySQL 為例,但其實其他的 RDB 也都是一樣的操作,差別在於 JDBC 那部份的設定而已,讀者們可以再去嘗試看看喔。
既然已經講完了關連式資料庫的整合,明天就會來講如何與 MongoDB 做整合,這部分就不用那麼麻煩了,因為 NiFi 就有內建好的 Processor 可以做使用,所以讀者們也不必太擔心。